import os
import numpy as np

def gen_golden_data_simple():
    # 配置参数
    dtype = np.float32
    # dtype = np.float16
    # dtype = np.int8
    # dtype = np.int16
    # dtype = np.int32

    # 输入张量形状 [N, C, H, W]
    input_shape = [9, 3, 89, 1749]  # 可以根据需要调整
    
    # ConstantPad参数
    pad_left = 1
    pad_right = 2  
    pad_top = 3
    pad_bottom = 4
    pad_value = 0.0  # 填充值
    
    # 生成输入数据
    x = np.random.uniform(-2, 2, input_shape).astype(dtype)
    
    # 计算输出形状
    output_shape = [
        input_shape[0],  # N保持不变
        input_shape[1],  # C保持不变  
        input_shape[2] + pad_top + pad_bottom,  # H + 上下填充
        input_shape[3] + pad_left + pad_right   # W + 左右填充
    ]
    
    # 初始化输出张量，全部填充为pad_value
    golden = np.full(output_shape, pad_value, dtype=dtype)
    
    # 将输入数据复制到输出张量的正确位置
    golden[
        :,  # 所有N
        :,  # 所有C
        pad_top:pad_top + input_shape[2],  # H方向的有效区域
        pad_left:pad_left + input_shape[3]   # W方向的有效区域
    ] = x
    
    # 创建输入输出目录
    os.makedirs("./input", exist_ok=True)
    os.makedirs("./output", exist_ok=True)
    
    # 保存文件
    x.tofile("./input/input_x.bin")
    golden.tofile("./output/golden.bin")
    
    # 打印信息用于验证
    print(f"输入形状: {input_shape}")
    print(f"输出形状: {output_shape}")
    print(f"填充参数: left={pad_left}, right={pad_right}, top={pad_top}, bottom={pad_bottom}")
    print(f"填充值: {pad_value}")
    print("输入数据样例:")
    print(x[0, 0])  # 打印第一个channel的第一个样本
    print("输出数据样例:")
    print(golden[0, 0])

if __name__ == "__main__":
    gen_golden_data_simple()